#ifndef __KEY_CASE_H__
#define __KEY_CASE_H__

#include "FwbConf.h" 

typedef enum {
	PS_KEY_INPUT = 0x41,				// 输入音源选择
	PS_KEY_STEREO = 0x21,				// 立体声选择
	PS_KEY_SURROUND = 0x09,				// 聆听模式选择
	PS_KEY_EQ = 0x11,					// EQ选择
	PS_KEY_PLAY_PAUSE = 0x10,			// 播放/暂停
	PS_KEY_SKIP_DN = 0x08,				// 向后
	PS_KEY_SKIP_UP = 0x20,				// 向前
	PS_KEY_MUTE = 0x40,					// 静音
	PS_KEY_JOP_ENTER = 0x42,			// 旋转按钮确认
} PS_KEY_CODE;							// 面板按键键值定义


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	待机		亮度		音调		出厂设置
//	通道+			音调+				音量+
//	通道-			音调-				音量-
//	噪音测试		菜单上				静音
//	菜单左			菜单				菜单右
//	格式显示		菜单下				录音暂停
//	随机		重复		停止		播放暂停
//	<<			>>			|<<			>>|
//	音效		夜间模式 	噪音类型	云类型
//	立体声		多声道		视频		云音乐
//	HDMI1		HDMI2		HDMI3		HDMI-ARC
//	光纤		同轴1		同轴2		模拟
typedef enum {
	IR_KEY_STANDBY = 0x9a,				// 待机
	IR_KEY_BRIGHTNESS = 0x1a,			// 亮度
	IR_KEY_MIC_CTRL = 0x18,				// 话筒
	IR_KEY_FACTOR_SET = 0x98,			// 出厂设置
	IR_KEY_TRIM_UP = 0xb2,				// 微调+
	IR_KEY_TRIM_DN = 0x8a,				// 微调-
	IR_KEY_MIC_UP = 0x70,				// 话筒调节+
	IR_KEY_MIC_DN = 0x48,				// 话筒调节-
	IR_KEY_VOLUME_UP = 0xb0,			// 音量+
	IR_KEY_VOLUME_DN = 0x88,			// 音量-

	IR_KEY_TEST_TONE = 0xa2,			// 噪音测试
	IR_KEY_MUTE = 0xa0,					// 静音
	IR_KEY_MENU_CTRL = 0x58,			// 菜单
	IR_KEY_MENU_UP = 0x60,				// 菜单上
	IR_KEY_MENU_DN = 0x68,				// 菜单下
	IR_KEY_MENU_LEFT = 0x5a,			// 菜单左
	IR_KEY_MENU_RIGHT = 0xd8,			// 菜单右
	IR_KEY_TRIM_CTRL = 0xaa,			// 微调
	IR_KEY_RECORD = 0xa8,				// 录音暂停
	
	IR_KEY_RANDOM = 0x4a,				// 随机
	IR_KEY_REPEAT = 0x0a,				// 重复
	IR_KEY_STOP = 0x08,					// 停止
	IR_KEY_PLAY_PAUSE = 0xc8,			// 播放暂停
	IR_KEY_FAST_BACK = 0x6a,			// <<
	IR_KEY_FAST_FORWARD = 0x2a,			// >>
	IR_KEY_SKIP_UP = 0xe8,				// |<<
	IR_KEY_SKIP_DN = 0x28,				// >>|
	IR_KEY_EQ = 0x72,					// 音效
	IR_KEY_NIGTT_MODE = 0x32,			// 夜间模式
	IR_KEY_NOISE_SIGNAL = 0x30,			// 噪音类型
	IR_KEY_MEDIA_TYPE = 0xf0,			// 云类型
	IR_KEY_STEREO = 0x52,				// 立体声
	IR_KEY_SURROUND = 0x12,				// 多声道
	IR_KEY_VIDEO_SRC = 0x10,			// 视频
	IR_KEY_INPUT_NET = 0xd0,			// 云音乐
	
	IR_KEY_INPUT_HDMI1 = 0x62,			// HDMI1
	IR_KEY_INPUT_HDMI2 = 0x22,			// HDMI2
	IR_KEY_INPUT_HDMI3 = 0x20,			// HDMI3
	IR_KEY_INPUT_HDMI_ARC = 0xe0,		// HDMI-ARC
	IR_KEY_INPUT_OPTICA = 0x42,			// 光纤
	IR_KEY_INPUT_COAXAL1 = 0x02,		// 同轴1
	IR_KEY_INPUT_COAXAL2 = 0x00,		// 同轴2
	IR_KEY_INPUT_AUX = 0xc0,			// 模拟
} IR_KEY_CODE;							// 红外遥控键值定义

typedef struct {
	uint8_t PsDone;											// 面板按键 检测成功
	PS_KEY_CODE PsCode;										// 面板按键 键值
	uint8_t Ps10ms;											// 面板按键扫描时间间隔为10ms可以了
	uint8_t PsLine;											// 面板按键扫描行计数器
	uint8_t PsConfirmTm;									// 面板按键的确认时间
	uint8_t PsStepMode;										// 面板按键 0=长按模式 1=设置为按键松手才继续检测

	uint8_t IrDone;											// 红外遥控 检测成功 
	IR_KEY_CODE IrCode;										// 红外遥控 键值 
	uint8_t IrTimeout;
	uint8_t IrError;
	uint8_t IrStatus;
	uint8_t IrContinSpeed;
	uint8_t IrContinCanclTm;
	uint32_t IrBuffer;
	uint16_t IrTick16;
#if (KEY_JOG_MODE != 0)										// 旋转按钮模式，0为不支持 1为正向，2为反向	
	uint8_t JogDone;     									// 旋转按钮 检测成功    
	uint8_t JogCode;										// 旋转按钮 键值
	uint8_t JopLockTm;
	uint8_t JopInputTm;
	uint8_t JopSta00;
	uint8_t JopSta01;         
	uint8_t JogSave;
	uint8_t JopInputEnl;	
#endif		// #if (KEY_JOG_MODE != 0)	旋转按钮模式，0为不支持 1为正向，2为反向		
} KEY_RAM;

extern KEY_RAM mKEY;

void MKEY_IrSetContinue(void);									// 设置按键为持续增减模式
void MKEY_HalTime1ms(void);
void MKEY_HalIrFalling(void);									// 红外遥控接收输出的下降边缘触发进入中断
void MKEY_HalInit(void);


extern uint16_t MSYS_GET_TICK_10US();						// 获取16位以10US为单位的读数值
extern void HAL_KEY_PS_OUT(char position, char level);		// 面板按键扫描行输出电平
extern char HAL_KEY_PS_IN(char position);					// 面板按键扫描行列输入电平
extern char HAL_KEY_JOP_IN(char position);


#endif		// #define __KEY_CASE_H__
